$(document).ready(function () {
    $("#sessionName").text("你好，" + $("#loginUser").text());
});

var webSocket = null;

// 判断当前浏览器是否支持WebSocket
if ("WebSocket" in window) {
    debugger
    // webSocket = new WebSocket("ws://echo.websocket.org"); // 别人的地址
    webSocket = new WebSocket("ws://localhost:9999/webSocketServer"); // 自己的地址
} else {
    alert("not support WebSocket");
}

// 连接发生错误的回调方法
webSocket.onerror = function () {
    debugger
    setMessageInnerHTML("error");
    alert("出现错误，请刷新后重试！");
}

// 连接成功建立的回调方法
webSocket.onopen = function (event) {
    debugger
    setMessageInnerHTML("open");
}

// 接收到消息的回调方法(接收到服务器端推送的消息后触发)
webSocket.onmessage = function (event) {
    // 获取服务器推送过来的消息
    var dataStr = event.data;
    // 将 dataStr 转换为 json 对象
    var res = JSON.parse(dataStr);
    // 判断是否是系统消息
    if (res.isSystem) {
        // 是系统消息
        var names = res.message;
        // 好友列表展示
        var userListStr = "";
        var broadcastListStr = "";
        for (var name of names) {
            userListStr += "<li><a onClick='showChat(\"" + name + "\")'>" + name + "</a></li>";
        }
        // 渲染好友列表
        document.getElementById("userlist").innerHTML = userListStr;
    } else {
        // 不是系统消息
        // 将服务器端推送的消息进行展示
        setMessageInnerHTML(res.fromName + ":" + res.message);
    }
}

// 选择好友后触发 onclick 事件，执行 showChat() 函数
var toName;
function showChat(name) {
    toName = name;
    document.getElementById("chatMes").innerHTML = "正在和" + name + "聊天";
}

// 连接关闭的回调方法
webSocket.onclose = function () {
    setMessageInnerHTML("close");
}

// 监听窗口关闭事件，当窗口关闭时，主动去关闭 webSocket 连接，防止连接还没断开就关闭窗口，server端会抛异常
window.onbeforeunload = function () {
    webSocket.close();
}

// 将消息显示在网页上
function setMessageInnerHTML(innerHTML) {
    document.getElementById("message").innerHTML += innerHTML + "<br/>";
}

// 关闭连接
function closeWebSocket() {
    webSocket.close();
}

// 发送消息
function send() {
    // 获取输入内容
    var message = document.getElementById("text").value;
    // 清除输入区的内容
    document.getElementById("text").value = "";
    // 显示发送者的消息
    setMessageInnerHTML(message);
    var json = {"toName":toName, "message":message};
    // 发送数据给服务器
    webSocket.send(JSON.stringify(json));
}
